#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define sld(n) scanf("%lld",&n)
#define pd(n) printf("%d", (n))
#define pld(n) printf("%lld", n)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define fi first
#define se second
const int N=1e5+10;
#define INF 0x7fffffff
typedef long long int ll;
using namespace std;
//----------------------------------------------------------------------------//
//余数相等的区间即便不是k的倍数的区间,相减即可构成条件 5+2 10+2 15+2-->10+2-(5+2)为5的倍数
ll st[N];
ll sum[N];
void solve()
{
	int n,k;
	ll x;
	ll ans;
	sd(n);sd(k);
	for(int i=1;i<=n;i++)
	{
		sld(x);
		sum[i]=x+sum[i-1];
		st[sum[i]%k]++;
	}
	ans=st[0];
	for(int i=0;i<k;i++)//自己推的公式,很挫QAQ
	{	
		if(st[i]==2) ans++;
		if(st[i]>2)
		{
			ans+=((1+(st[i]-1))*(st[i]-1))/2;
		}
		
	}
	pld(ans);
}

int main()
{
	int T=1;
	//sd(T);
	while (T--)
	{
		solve();
	}
	return 0;
}
